From c99040a4b3985994a9cbe6ea0f4f0fd28ba3740e Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Tue, 4 Sep 2007 12:19:37 +0000 Subject: [PATCH] Do not iterate recursively over all child nodes. 2007-09-04 Johan Dahlin * gtk/gtk-builder-convert (GtkBuilder._packing_prop_to_child_attr): Do not iterate recursively over all child nodes. (GtkBuilderConverter._default_widget_converter): Use a more efficient way of iterating over all property nodes #472974 (Carlos Garnacho) svn path=/trunk/; revision=18721 --- ChangeLog | 6 ++++++ gtk/gtk-builder-convert | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index db9fb73547..946baf01d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,12 @@ empty properties, since we do not know the default GParamSpec values. #472981 (Carlos Garnacho) + * gtk/gtk-builder-convert (GtkBuilder._packing_prop_to_child_attr): + Do not iterate recursively over all child nodes. + (GtkBuilderConverter._default_widget_converter): Use a more efficient + way of iterating over all property nodes + #472974 (Carlos Garnacho) + 2007-09-03 Emmanuele Bassi * gtk/gtkrecentmanager.c diff --git a/gtk/gtk-builder-convert b/gtk/gtk-builder-convert index f5721c39da..fd87ed67fc 100755 --- a/gtk/gtk-builder-convert +++ b/gtk/gtk-builder-convert @@ -92,6 +92,16 @@ def get_signal_nodes(node): signals.append(child) return signals +def get_property_nodes(node): + assert node.tagName == 'object' + properties = [] + for child in node.childNodes: + if child.nodeType == Node.TEXT_NODE: + continue + if child.tagName == 'property': + properties.append(child) + return properties + def get_accelerator_nodes(node): assert node.tagName == 'object' accelerators = [] @@ -240,9 +250,7 @@ class GtkBuilderConverter(object): def _default_widget_converter(self, node): klass = node.getAttribute("class") - for prop in node.getElementsByTagName("property"): - if prop.parentNode is not node: - continue + for prop in get_property_nodes(node): prop_name = prop.getAttribute("name") if prop_name == "sizegroup": self._convert_sizegroup(node, prop) @@ -560,7 +568,7 @@ class GtkBuilderConverter(object): def _packing_prop_to_child_attr(self, node, prop_name, prop_val, attr_val=None): - for child in node.getElementsByTagName("child"): + for child in get_child_nodes(node): packing_props = [p for p in child.childNodes if p.nodeName == "packing"] if not packing_props: continue -- 2.30.2